package org.java.detail.service.impl.impl;

import org.java.detail.service.CreateDetailHtml;
import org.java.detail.service.DetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Map;

/**
 * @author WHQ
 * @version 1.0
 * @date 2022-3-10 0010 上午 11:18
 */
@Service
public class CreateDetailHtmlImpl implements CreateDetailHtml {
    @Autowired
    private TemplateEngine templateEngine;
    @Autowired
    private DetailService detailService;
    @Override
    public void createDetail(Long id) {
        //根据id查询出要封装在静态页面中的信息
        Map map = detailService.findSkuDetailById(id);
        //创建thymeleaf模板页面的上下文，用于封装要渲染在页面上的数据
        Context context=new Context();
        context.setVariables(map);
        //创建一个file，用于指定生成的静态页面放在什么位置(静态页面需要放在nginx服务器中)
        //为了方便访问页面，我们在Windows中配置一个nginx服务器用于保存生成的静态页面
        File file = new File("E:\\ideaProject\\springcloud\\project\\nginx-1.18.0\\nginx-1.18.0\\html\\item",id+".html");
        //创建一个打印输出流，用于将生成的页面，输出到指定位置
        try {
            PrintWriter out=new PrintWriter(file);
            //通过模板引擎产生静态化的页面
//            templateEngine.process("将哪一个模板页面","上下文","输出流");
            //将哪一个模板页面:静态页面的模板名称，就是我们的item.html
            templateEngine.process("item.html",context,out);
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
